#pragma once

#include "Object/Object.h"
#include "EditorPanelModel.m.h"


class REditorAbilityModel;

//放在主窗口下方的控件
//用于输出各种信息
RCLASS(ExtraHeader="Ability/EditorAbilityModel.h")
class REditorPanelModel : public RObject
{
    ROBJECT

public:
    virtual void FirstTimeInitializeObject() override;

    RFIELD() 
    int64_t ActivedAbilityIndex = -1;

    int64_t GetPanelAbilitysNum() const;
    TSharedObjectPtr<REditorAbilityModel> GetPanelAbility(int64_t Index) const;
    void InsertPanelAbility(int64_t Index, TSharedObjectPtr<REditorAbilityModel> InAbility);
    void RemovePanelAbility(int64_t Index);

    TDelegate<void,int64_t/*Index*/,TSharedObjectPtr<REditorAbilityModel> /*InAbility*/> OnPanelAbilityAdded;
    TDelegate<void,int64_t/*Index*/> OnPanelAbilityRemoved;

protected:
    
    RFIELD()
    TVector<TSharedObjectPtr<REditorAbilityModel>> PanelAbilitys;


};
